﻿using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Text;
using System.Xml.Linq;

namespace Ocean.His.MedicalInsurance
{
    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2206AData
    {
        /// <summary>
        /// 人员编号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_no")]
        public string PsnNo { get; set; }

        /// <summary>
        /// 就诊凭证类型
        /// 参数类型：字符型
        /// 参数长度：3
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "mdtrt_cert_type")]
        public string MdtrtCertType { get; set; }

        /// <summary>
        /// 就诊凭证编号
        /// 参数类型：字符型
        /// 参数长度：50
        /// 代码标识：
        /// 是否必填：
        /// 就诊凭证类型为“01”时填写电子凭证令牌，为“02”时填写身份证号，为“03”时填写社会保障卡卡号
        /// </summary>
        [DataMember(Name = "mdtrt_cert_no")]
        public string MdtrtCertNo { get; set; }

        /// <summary>
        /// 医疗类别
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "med_type")]
        public string MedType { get; set; }

        /// <summary>
        /// 医疗费总额
        /// 参数类型：数值型
        /// 参数长度：16,2
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "medfee_sumamt")]
        public decimal MedfeeSumamt { get; set; }

        /// <summary>
        /// 个人结算方式
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "psn_setlway")]
        public string PsnSetlway { get; set; }

        /// <summary>
        /// 就诊ID
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "mdtrt_id")]
        public string MdtrtId { get; set; }

        /// <summary>
        /// 收费批次号
        /// 参数类型：字符型
        /// 参数长度：30
        /// 代码标识：
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "chrg_bchno")]
        public string ChrgBchno { get; set; }

        /// <summary>
        /// 个人账户使用标志
        /// 参数类型：字符型
        /// 参数长度：1
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "acct_used_flag")]
        public string AcctUsedFlag { get; set; }

        /// <summary>
        /// 险种类型
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：Y
        /// 是否必填：Y
        /// 
        /// </summary>
        [DataMember(Name = "insutype")]
        public string Insutype { get; set; }

        /// <summary>
        /// 字段扩展
        /// 参数类型：字符型
        /// 参数长度：4000
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "exp_content")]
        public string ExpContent { get; set; }

        /// <summary>
        /// 公立医院改革标志
        /// 参数类型：字符型
        /// 参数长度：6
        /// 代码标识：
        /// 是否必填：
        /// 
        /// </summary>
        [DataMember(Name = "pub_hosp_rfom_flag")]
        public string PubHospRfomFlag { get; set; }

    }

    /// <summary>
    /// 
    /// </summary>
    [DataContract]
    public class SI2206AInputModel
    {
        [DataMember(Name = "data")]
        public SI2206AData SI2206AData { get; set; }
    }

    /// <summary>
    /// 2206A
    /// 门诊预结算A
    /// </summary>
    [DataContract]
    public class SI2206ARequestModel : SIBaseRequestModel
    {
        /// <summary>
        /// 交易输入
        /// </summary>
        [DataMember(Name = "input")]
        public SI2206AInputModel Input { get; set; }

        public SI2206ARequestModel(MedicalInsuranceOption medicalInsuranceOption,
            SI2206AData si2206AData) : base(medicalInsuranceOption)
        {
            Infno = "2206A";
            Input = new SI2206AInputModel();
            Input.SI2206AData = si2206AData;
        }
    }
}
